package shg.book.control
{
	
	import flash.display.Loader;
	import flash.errors.EOFError;
	import flash.errors.IOError;
	import flash.events.Event;
	import flash.filesystem.File;
	import flash.filesystem.FileMode;
	import flash.filesystem.FileStream;
	import flash.net.FileFilter;
	import flash.utils.ByteArray;
	
	import shg.book.read.ReadTextBookAction;

	/**
	 * 这个类原来判断文件是属于什么类型
	 * 纯文本类型就调用ReadTextFile类读取里面的数据
	 * HTML类型的数据就调用ReadHtmlFile读取
	 * 漫画类的书籍就调用ReadImgFile类读取
	 * 
	 * */
	public class MakeSureFileType
	{
		private var byte:ByteArray=new ByteArray();
		//文本类型标识
		private var content_marker:String;
		private var readTextBook:ReadTextBookAction;
		
		public function MakeSureFileType()
		{
		}
		/**
		 * 打开一个对话框
		 * 共用户选择,
		 * */
		public function openFile():void{
			var fileFileter:FileFilter=new FileFilter("选择书籍*.txt *.xml *.log","*.txt;*.xml;*.log");
			var file:File=File.documentsDirectory;
			file.browseForOpen("打开书籍",[fileFileter]);//默认为用户文档路径img
			file.addEventListener(Event.SELECT,loaderFile);
		}
		/**
		 * 根据选择的文件
		 * */
		private  function loaderFile(event:Event):void{
			var loader:Loader = new Loader();
			var file:File=event.target as File;
			var filePath:String=file.nativePath.toString();//获取选择文件的路径
			var stream:FileStream=new FileStream();
			stream.open(file,FileMode.READ);
			stream.readBytes(byte);
			makeSureType(byte);
		}
		/**
		 * 确定所读取的文件是什么类型
		 * 一：纯文本分为2种读法，免费的书籍是顺着读取，收费的书籍是倒着读取
		 * 二：HTML文本类型的书籍是无论是免费的还是收费的书籍都是顺着读取
		 * 三：漫画类型的数据
		 * */
		private function makeSureType(bytes:ByteArray):void{
			var str:String;
			try{
				bytes.position=0;
				str=bytes.readMultiByte(32+10,"UTF-8");
				content_marker=str.slice(32,42);
				if(content_marker=="0000000000"){
					if(readTextBook==null)
						readTextBook=new ReadTextBookAction();
					//readTextBook.readFreeBook(bytes,str.slice(0,32));
				}else{
					bytes.position=bytes.length-10;
					str=bytes.readMultiByte(10,"UTF-8");
					//如果这两种方法都无法判断说明文件被改写，这时候不会做任何操作
					if(str=="0000000000"){
						if(readTextBook==null)
							readTextBook=new ReadTextBookAction();
						//readTextBook.readChangeBook(bytes);
					}else if(str=="0000000001"){
						var readHtmlFile:ReadHtmlFile=new ReadHtmlFile();
						readHtmlFile.readByte(bytes);
					}
				}
			}catch(error:EOFError){
				trace("没有足够的数据可读"+error.toString());
			}
		}
	}
}